﻿using System;
using System.Reflection;

namespace Dotnet.Utils.Utility.Dependency.Castle
{
    public interface IIocRegistrar
    {
        void Register<TType, TImpl>() where TType : class where TImpl : class, TType;

        void Register<TType, TImpl>(DependencyLifeStyle lifeStyle) where TType : class where TImpl : class, TType;

        void Register(Type type, Type impl);

        void Register(Type type, Type impl, DependencyLifeStyle lifeStyle);

        void RegisterAssembly(Assembly assembly);

        void RegisterSingleton(Type type, object impl);
    }
}